package com.yuandian.api.management.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yuandian.api.management.validate.InsertFlag;
import com.yuandian.api.management.validate.UpdateFlag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.time.LocalDateTime;
 /**
 * 系统配置表;
 * @author zfsn
 * @date 2023-3-7
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "系统配置表", description = "系统配置表")
@TableName("conf_system")
public class ConfSystem extends BasePage<ConfSystem> {

    /**
     * 主键，唯一标识数据
     */
    @Null(message = "系统id应该为空", groups = InsertFlag.class)
    @NotNull(message = "系统id不能为空", groups = {UpdateFlag.class})
	@Digits(integer = Integer.MAX_VALUE, fraction = 0, message = "系统id只能为整数且不能为空", groups = {UpdateFlag.class})
    @ApiModelProperty(value = "主键", notes = "主键，唯一标识数据")
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 系统所属域id
     */
    @ApiModelProperty(value = "系统所属域id", notes = "系统所属域id")
    private String domainCode;

	 /**
	  * 系统所属云平台编码，字典：cloud_platform
	  */
	 @ApiModelProperty(value = "系统所属云平台编码", notes = "系统所属云平台编码，字典：cloud_platform")
	 private String cloudPlatformCode;

	 /**
	  * 系统所属云平台编码，字典：cloud_platform
	  */
	 @TableField(exist = false)
	 @ApiModelProperty(value = "系统所属云平台名称", notes = "系统所属云平台编码，字典：cloud_platform")
	 private String cloudPlatformName;

    /**
     * 系统名称
     */
    @NotNull(message = "系统名称不能为空")
    @ApiModelProperty(value = "系统名称", notes = "系统名称")
    private String name;

    /**
     * 被监控系统状态，0：初始化(默认)、1：监控中、2：停止
     */
    @ApiModelProperty(value = "状态", notes = "被监控系统状态，0：初始化(默认)、1：监控中、2：停止")
    private Integer status;

    /**
     * 系统类型，1：营业厅、2：网厅
     */
    @ApiModelProperty(value = "系统类型", notes = "系统类型，1：营业厅、2：网厅")
    private Integer type;

    /**
     * 是否存在区域，0:否(默认)、1:是
     */
    @ApiModelProperty(value = "是否存在区域", notes = "是否存在区域，0:否(默认)、1:是")
    private Integer isRegion;

    /**
     * 是否存在漂移，0:否(默认)、1:是
     */
    @ApiModelProperty(value = "是否存在漂移", notes = "是否存在漂移，0:否(默认)、1:是")
    private Integer isDrift;

    /**
     * 是否为关键系统，0:否(默认)、1:是
     */
    @ApiModelProperty(value = "是否为关键系统", notes = "是否为关键系统，0:否(默认)、1:是")
    private Integer isKey;

    /**
     * 是否虚拟系统，0:否(默认)、1:是
     */
    @ApiModelProperty(value = "是否虚拟系统", notes = "是否虚拟系统，0:否(默认)、1:是")
    private Integer isVirtual;

    /**
     * 显示顺序
     */
	@Digits(integer = Integer.MAX_VALUE, fraction = 0, message = "顺序只能为整数且不能为空")
    @ApiModelProperty(value = "显示顺序", notes = "显示顺序")
    private Integer sequence;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人", notes = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", notes = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @JsonIgnore
    @ApiModelProperty(value = "更新人", notes = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
	@JsonIgnore
    @ApiModelProperty(value = "更新时间", notes = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 是否逻辑删除，0：否、1：是
     */
	@JsonIgnore
    @ApiModelProperty(value = "是否逻辑删除", notes = "是否逻辑删除，0：否、1：是")
    private Integer isDel;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", notes = "备注")
    private String remarks;

	 /**
	  * 系统域
	  */
	 @TableField(exist = false)
	 @ApiModelProperty(value = "系统域", notes = "系统域")
	 private String systemDomain;

	 /**
	  * 系统类型
	  */
	 @TableField(exist = false)
	 @ApiModelProperty(value = "系统类型", notes = "系统类型")
	 private String systemType;

	 /**
	  * 系统所属域名
	  */
	 @TableField(exist = false)
	 @ApiModelProperty(value = "系统所属域名", notes = "系统所属域名")
	 private String domainName;

 }